package com.joysuch.wwyt.openapi.controllers.controllerV1.req;

import cn.zlg.common.springmvc.validate.constraints.NotNull;
import com.joysuch.wwyt.bp.bean.BpCertificateListBean;
import com.joysuch.wwyt.core.bean.BaseAttachmentBean;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.util.List;

/**
 * @author: JamesZY
 * @date: 2021/8/30
 * @description:
 */
@Data
public class ApiV1BaseUserAddReq implements Serializable {

    private static final long serialVersionUID = 6717871815909926888L;

    // ID
    private java.lang.Long id;
    // 姓名
//    @NotBlank(message = "员工姓名不能是空")
//    @Length(max = 64, message = "姓名长度不能超过64字符")
    private java.lang.String realName;


    //    @NotBlank(message = "性别不能是空")
//    @Length(max = 2, message = "性别长度不能超过2字符")
    private java.lang.String gender;


    //    @NotBlank(message = "组织唯一编码不能是空")
//    @Length(max = 64, message = "组织编码长度不能超过64字符")
    private String departUniqueId;


    //    @NotBlank(message = "岗位唯一编码不能是空")
//    @Length(max = 64, message = "岗位编码长度不能超过64字符")
    private String jobUniqueId;


    //    @NotBlank(message = "工号不能是空")
//    @Length(max = 10, message = "工号长度不能超过10字符")
    private String code;


    //    @NotBlank(message = "工作单位不能是空")
//    @Length(max = 64, message = "工作单位长度不能超过64字符")
    private String workCompany;
    //工种
    private String workType;
    // 租户
    private java.lang.Long tenentId;
    // 出生日期
    private String birthday;
    // 曾用名
    private java.lang.String oldName;
    // 身份
//    @NotNull(field = "身份")
    private java.lang.Long role;
    // 身份名称
    private String roleName;
    // 证件照
    private BaseAttachmentBean image;
    //帽子
    private BaseAttachmentBean cap;
    // 民族
//    private java.lang.Long nation;
    private String nationName;
    // 证件类型
//    private java.lang.Long idCardType;
    // 证件类型名称
    private String idCardName;
    // 证件号码
//    @Length(max = 30, message = "证件号长度不能超30字符")
    private java.lang.String idCardNo;
    // 联系电话
//    @Length(max = 13, message = "电话长度不能超过13字符")
    private java.lang.String telephone;
    // 健康状况
//    private java.lang.Long healthStatus;
    // 健康状况名称
    private String healthStatusName;
    // 学历
//    private java.lang.Long education;
    // 学历名称
    private String educationName;
    // 专业
    private java.lang.String major;
    // 户籍所在省
    private java.lang.Long censusRegisterProvince;
    // 户籍所在市
    private java.lang.Long censusRegisterCity;
    // 户籍所在省所在市
//    @Length(max = 64, message = "户籍所在地长度不能超过64字符")
    private String censusRegister;
    // 户籍所在区
    private java.lang.Long censusRegisterArea;
    // 从业所在地省
    private java.lang.Long workAtProvince;
    // 从业所在地市
    private java.lang.Long workAtCity;
    // 从业所在区
    private java.lang.Long workAtArea;
    // 从业所在省所在市
//    @Length(max = 64, message = "从业所在地长度不能超过64字符")
    private String workAt;
    // 通讯地址
//    @Length(max = 64, message = "通讯地址长度不能超过64字符")
    private java.lang.String address;
    // 邮编
//    @Length(max = 64, message = "邮编长度不能超过64字符")
    private java.lang.String postcode;
    // 参加工作时间
    @Pattern(regexp = "2[0-9]{3}-[0-9]{2}-[0-9]{2}", message = "参加工作时间格式错误")
    private String joinWorkDate;
    // 职称/技能等级
//    @Length(max = 64, message = "职称/技能长度不能超过64字符")
    private java.lang.String title;
    // 工作职责
//    @Length(max = 512, message = "工作职责长度不能超过512字符")
    private java.lang.String jobDuty;
    // 工作经历
//    @Length(max = 512, message = "工作经历长度不能超过512字符")
    private java.lang.String jobHistory;
    // 机构代码
    private java.lang.String orgCode;
    // 创建人
    private java.lang.Long createBy;
    // 创建时间
    private java.util.Date createTime;
    // 更新人
    private java.lang.Long updateBy;
    // 更新时间
    private java.util.Date updateTime;
    // 证件ID
    private String[] certificateIds;
    private List<BpCertificateListBean> certificateListBeans;
    private String census;
    private String work;
    //邮箱
    @Email
//    @Length(max = 64, message = "邮箱长度不能超过64字符")
    private String email;

    //外部系统关联URL
    private String refUrl;
    //定位卡号
//    @Length(max = 64, message = "定位卡号长度不能超过64字符")
    private String sn;
    //门禁卡号
//    @Length(max = 64, message = "门禁卡号长度不能超过64字符")
    private String cardNumber;
    //头像图标
    private String facePic;

    //加入本单位时间
    @Pattern(regexp = "2[0-9]{3}-[0-9]{2}-[0-9]{2}", message = "加入本单位时间格式错误")
    private String enterDate;
    //最高学位
//    @Length(max = 64, message = "最高学位长度不能超过64字符")
    private String highestDegree;
    //毕业学校
//    @Length(max = 64, message = "毕业学校长度不能超过64字符")
    private String graduateSchool;
    //政治面貌
//    private Long politicallyId;
    private String politicallyName;
    //政治面貌名称
    //人员类型
//    private Long personTypeId;
    private String personTypeName;


    //办公电话
//    @Length(max = 13, message = "办公电话长度不能超过13字符")
    private String officePhone;
    //工龄
    private Integer workAge;
    //职务
//    @Length(max = 64, message = "职务长度不能超过64字符")
    private String duty;
    //备注
//    @Length(max = 512, message = "备注长度不能超过512字符")
    private String remark;

//    @Length(max = 64, message = "人员编码长度不能超过64字符")
    private String uniqueId;
}
